import React, {
useEffect,
forwardRef,
useRef,
useState,
useImperativeHandle,
createRef,
} from "react"
const Child = forwardRef((props, ref) => {
const [val, setVal] = useState(0)
const button = useRef(null)
const handle = () => {
setVal(val + 1)
}
useImperativeHandle(ref, () => {
return {
button,
val,
handle,
}
})
return (
<button ref={button} onClick={handle}>
{val}
</button>
)
})
export default function Demo() {
let child = useRef(null)
useEffect(() => {
console.log(child)
}, [])
const handle = () => {
child.current.handle()
}
return (
<>
<button onClick={handle}>调用组件内方法</button>
<Child ref={child} />
</>
)
}